package org.dxy.domain.game.model.aggregate;

import org.dxy.domain.game.adapter.event.EventQueue;
import org.dxy.domain.game.command.GameStartCommand;
import org.dxy.domain.game.command.SideSwapCommand;

/**
 * 表示中国象棋游戏的聚合根。
 * <p>
 * 该类管理一局游戏的完整状态和行为，包括玩家、棋盘和移动记录。
 * </p>
 */


public interface GameAggregate {
        /**
         * 处理游戏开始命令
         * @param gameStartCommand
         */
        void handle(EventQueue eventQueue, GameStartCommand gameStartCommand);

        /**
         * 处理游戏开始命令
         * @param eventQueue
         * @param sideSwapCommand
         */
        void handle(EventQueue eventQueue, SideSwapCommand sideSwapCommand);

        Long getGameId();

        Long getCurrentPlayerId();

}
